<?php

namespace Sharks\Core\Support\Bag;

interface Bag {
    /**
     * 取值
     * @param $key
     * @param null $default
     * @return mixed
     */
    public function get($key, $default = null);

    /**
     * 取不到值就抛出异常
     * @param $key
     * @return array|null
     */
    public function getOrFail($key);

    /**
     * 确认数据包中属性值是否存在
     * @param $key 属性名称
     * @return bool
     */
    public function has($key);

    /**
     * 移除某名称的值
     * @param $key
     */
    public function forget($key);

    /**
     * 设置某名称的值
     * @param $key
     * @param $value
     * @return mixed
     */
    public function put($key, $value);

    /**
     * 原始数据,所有值
     * @return array
     */
    public function all();
}